package com.example.demo.leetcode.zuocheng.tanxin;

import java.util.Arrays;
import java.util.Comparator;

/**
 *
 * 思路
 *      字符串 + 标识连接
 *      a + b <= b + a   那么认为 a在前面组合的字符串会比较小(可以证明，并且有传递性)
 *      b + c <= c + b
 *      证明 a + c <= c + a
 *
 *      那么只需要排序这个 字符数组 使 a+b <= b+a 则 a在前面
 *      最后拼接字符串则得到最小字典序
 * @author xujm
 * @version V2.4
 * @since 2.4.0 2021/9/12 12:38
 */
public class Arr_一组字符组成的字符如何使它字典序最小 {



    public static String getMinStr(String []arr){

        Arrays.sort(arr, new Comparator<String>() {
            @Override
            public int compare(String a, String b) {
                return (a+b).compareTo(b+a);
            }
        });

        String end = "";
        for(String temp : arr){
            end = end+temp;
        }
        return end;
    }

    public static void main(String[] args) {
        String [] arr = {"b","ba"};
        System.out.println(getMinStr(arr));
    }


}
